<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /* 
      1、在对象中，属性名和属性值一样，可以省略
      2、在对象中，函数可以省略：function
      3、表达式可以当做对象中的属性
    */
    let s = 'say'
    let h = 'hello'
    let name = 'zs'
    let obj = {
        name,
        age: 18,
        // say: function () {
        //     console.log('说话了');
        // }
        say() {
            console.log(this);
            console.log('说话了');
        },
        [s + h]() {
            console.log('sayHello');
        }
    }
    console.log(obj);
    console.log(obj.name);
    obj.say()
    obj.sayhello()
    console.log(obj['age']);
    obj.color = 'red'
    console.log(obj);
    // 删除对象中的属性 delete
    delete obj.age
    console.log(obj);

</script>
<script>
    // Object.is函数	
    // 函数的作用：比较两个值是否严格相等，或者说全等。===
    console.log(Object.is(10, 10)); // t
    console.log(Object.is(10, '10')); //f 
    console.log(Object.is(NaN, NaN)); // f
    // Object.assign(目标对象，源对象,，源对象,源对象)函数 （重点）
    // 函数作用：将源对象的属性赋值到目标对象上。
    var obj1 = {
        a: 1,
        b: 2,
    }
    var obj2 = {
        c: 3,
        d: 4
    }
    var obj3 = {
        a: 6,
        e: 5
    }
    let obj4 = Object.assign(obj1, obj2, obj3)
    console.log(obj1);
    console.log(obj2);
    console.log(obj4);
    // 对象深拷贝 
    let obj5 = Object.assign({}, obj3)
    obj3.a = 8
    console.log(obj3);
    console.log(obj5);
    // Object.getPrototypeOf函数
    // 函数作用：获取一个对象的prototype属性。
    function Person() {

    }
    Person.prototype.name = 'zs'
    Person.prototype.age = 18
    var p1 = new Person()
    console.log(Object.getPrototypeOf(p1));
    // Object.setPrototypeOf函数
    // 函数作用：设置一个对象的prototype属性
    Object.setPrototypeOf(p1, {
        color: 'red'
    })
    // 原型的指向发生改变
    console.log(Object.getPrototypeOf(p1));
    // Object.keys()   获取对象中的属性名
    // Object.values() 获取对象中的属性值
    console.log(Object.keys(obj3));
    console.log(Object.values(obj3));
</script>

</html>